//为什么要使用 lamda表达式？
// 1.避免匿名内部类定义过多；
// 2.可以让代码看起来更加简洁；
// 3.去掉了一堆没有意义的代码，只留下核心的逻辑。

public class LambdaDemo01 {

    public static class ILike2 implements Like{
        @Override
        public void like() {
            System.out.println("I like you : 2");
        }
    }


    public  static void main(String[] args) {

        //1.通过具体类实现Like接口并调用like()函数
        Like like = new ILike1();
        like.like();

        //2.通过静态内部类实现Like接口并调用like()函数
        like = new ILike2();
        like.like();

        //3.通过局部内部类实现Like接口并调用like()函数
         class ILike3 implements Like{
             @Override
             public void like() {
                 System.out.println("I like you : 3");
             }
         }
         like = new ILike3();
         like.like();

         //4.通过匿名内部类实现Like接口并调用like()函数
        like = new Like() {
            @Override
            public void like() {
                System.out.println("I like you : 4");
            }
        };
        like.like();

        //5.通过lambda表达式
        like=()->{ System.out.println("I like you : 5");};
        like.like();
    }


}

 interface Like {
    public void like();    //只有一个抽象方法的接口，叫做函数式接口
}
class ILike1 implements Like{
    @Override
    public void like() {
        System.out.println("I like you : 1");
    }
}
